﻿namespace EFML.Internal.Base
{
    using System;
    using System.ComponentModel;
    using System.Globalization;

    using Creek.UI.EFML.Base;

    public class StyleConverter : ExpandableObjectConverter
    {
        public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
        {
            // Von einem String können wir konvertieren
            if (sourceType == typeof(string))
            {
                return true;
            }

            return base.CanConvertFrom(context, sourceType);
        }

        public override object ConvertTo(
            ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
        {
            // Wenn der Quellwert vom Typ Ränder ist
            if (value is IStyle)
            {
                // Zu einem String konvertieren 
                if ((destinationType == typeof(string)))
                {
                    var seitenRänder = (IStyle)value;
                    return "";
                    // return string.Format("{0}; {1}; {2}; {3}", seitenRänder.autosize, seitenRänder.backgroundcolor, seitenRänder.font, seitenRänder.margin, seitenRänder.padding);
                }
            }

            return base.ConvertTo(context, culture, value, destinationType);
        }

        public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo info, object value)
        {
            // Wenn von einem String konvertiert wird
            if (value is string)
            {
                // Ränder Typ selbst erstellen und füllen
                try
                {
                    var propertyList = (string)value;
                    string[] properties = propertyList.Split(';');
                    return value;
                }
                catch
                {
                    throw new ArgumentException("Ungültige Argumente");
                }
            }
            return base.ConvertFrom(context, info, value);
        }
    }
}